import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)
// 创建store
const store = new Vuex.Store({
  state: { // state是仓库中存储的状态（数据）
    num: 5
  },
  actions: {
    /* addNumAsync (context) {
      // 在这里可以发送异步请求
      // 请求一个ajax得到一个值 100 赋值给 num
      // context 就是上下文 store
      setTimeout(() => {
        const num = 10
        context.commit('setNum', num)
      }, 2000)
    } */
    addNumAsync ({ commit }, n) { // 解构赋值 直接拿到commit方法
      // alert(n)
      setTimeout(() => {
        const num = 10
        commit('setNum', num)
      }, 2000)
    }
  },
  mutations: { // mutations 用于修改state的方法
    addNum (state, n) {
      state.num += n
    },
    setNum (state, n) {
      state.num = n
    }
  },
  getters: {
    // 相当于vuex中的计算属性 基于state中的状态派生出 其他状态
    doubleNum (state) {
      return state.num * 2
    }
  }
})
export default store
